package com.vivo.toolkit.stringtoolkit;

import java.util.ArrayList;
import java.util.List;

public class StringUtil {

	public static List<String> separatedStringToList(String separatertedString, char token) {
		List<String> list = new ArrayList<String>();
		String[] strings = separatertedString.split(String.valueOf(token));
		for (String string : strings) {
			list.add(string);
		}
		return list;
	}

	public static String toSeparatedString(List<?> list, char token) {
		StringBuilder sb = new StringBuilder();
		for (Object object : list) {
			sb.append(object.toString());
		}
		if (sb.length() > 0 && sb.charAt(sb.length()) == token) {
			return sb.substring(0, sb.length() - 1);
		}
		return sb.toString();
	}

	public static int getRealLength(String src, int sublength) {

		float length = 0;
		for (int x = 0; sublength < src.length() ? x < sublength : x < src.length(); x++) {

			char srcChar = src.charAt(x);

			if (srcChar < 256) {
				length += 2;
			} else {
				length += 1;
			}
		}

		for (int x = sublength; length < src.length() ? x < length : x < src.length(); x++) {

			char srcChar = src.charAt(x);

			if (srcChar > 256) {
				length -= 1;
			}
		}
		return (int) length;

	}
	//
	// // length的值为西文字符的长度，
	// public static String cutString(String src, int length) {
	// int index = 0;
	// int indexSrc = 0;
	// while (index < length - 1 && indexSrc < length - 1) {
	// char ch = src.charAt(indexSrc);
	// if (ch < 256) {
	// index += 1;
	// } else {
	// index += 2;
	// }
	// indexSrc++;
	// }
	// if (indexSrc < src.length() - 1) {
	// return src.substring(0, indexSrc) + "...";
	// } else {
	// return src.substring(0, indexSrc);
	// }
	// }
	//    
	// public static String urlDecode(String s){
	//
	// boolean needToChange = false;
	// int numChars = s.length();
	// StringBuffer sb = new StringBuffer(numChars > 500 ? numChars / 2
	// : numChars);
	// int i = 0;
	//
	// char c;
	//
	// while (i < numChars) {
	// c = s.charAt(i);
	// switch (c) {
	// case '+':
	// sb.append(' ');
	// i++;
	// needToChange = true;
	// break;
	// case '%':
	//
	// try {
	// while (((i + 2) < numChars) && (c == '%')) {
	// try {
	// char ch = s.charAt(i + 1);
	// if (ch == 'u') {
	// ch = (char) Integer.parseInt(s.substring(i + 2,
	// i + 6), 16);
	// sb.append(ch);
	// i += 6;
	// } else {
	// ch = (char) Integer.parseInt(s.substring(i + 1,
	// i + 3), 16);
	// sb.append(ch);
	// i += 3;
	// }
	//
	// } catch (Exception e) {
	//
	// }
	//
	// if (i < numChars)
	// c = s.charAt(i);
	// // if()
	// // sb.append(c);
	// }
	//
	// // A trailing, incomplete byte encoding such as
	// // "%x" will cause an exception to be thrown
	//
	// if ((i < numChars) && (c == '%'))
	// throw new IllegalArgumentException(
	// "URLDecoder: Incomplete trailing escape (%) pattern");
	//
	// } catch (NumberFormatException e) {
	// throw new IllegalArgumentException(
	// "URLDecoder: Illegal hex characters in escape (%) pattern - "
	// + e.getMessage());
	// }
	// needToChange = true;
	// break;
	// default:
	// sb.append(c);
	// i++;
	// break;
	// }
	// }
	//
	// return (needToChange ? sb.toString() : s);
	// }

}
